Spring Boot 2.0.0参考手册_中文版_Part IV_25

文章作者:Tyan
博客:noahsnail.com  |  CSDN  |  简书

25. Profiles

Spring Profiles提供了一种隔离部分应用配置的方式,并让这些配置只在特定的环境生效。任何带有@Profile标记的@Component@Configuration在加载时都会受限制:

1
2
3
4
5
6
7
@Configuration
@Profile("production")
public class ProductionConfiguration {

// ...

}

以正常的Spring方式,你可以使用spring.profiles.active Environment属性来指定激活哪一个profiles。你可以在任何常见的方式指定这个属性,例如你可以在你的application.properties中包含它:

1
spring.profiles.active=dev,hsqldb

或在命令行用--spring.profiles.active=dev,hsqldb指定。

25.1 添加激活的profiles

spring.profiles.active属性与其它的属性一样遵循同样的排序规则,最高的PropertySource优先。这意味着你可以在application.properties指定激活的profiles,然后用命令行转换替代它们。

例如,当一个应用具有以下属性且运行时使用--spring.profiles.active=prod转换,proddbprodmq profiles也将被激活:

1
2
3
4
5
6
7
---
my.property: fromyamlfile
---
spring.profiles: prod
spring.profiles.include:
- proddb
- prodmq

记住可以在YAML文档中定义spring.profiles来决定在配置中包含特定的文档。更多细节请看70.7小节,“根据环境更改配置”。

25.2 以编程方式设置profiles

你可以在你的应用运行之前以编程的方式调用SpringApplication.setAdditionalProfiles(…​)来设置激活的profiles。也可以使用Spring的ConfigurableEnvironment接口来激活profiles。

25.3 指定profile的配置文件

application.properties(或application.yml)和通过@ConfigurationProperties引用的文件的特定profiles变种都被当做文件进行加载。更多细节请看24.4小节,“Profile-specific properties”。

如果有收获,可以请我喝杯咖啡!